import wepy from 'wepy'

let host = 'http://controller.cdblog.xin/api/'
let util = {
  // 发送请求方法
  api: async (options) => {
    options.url = host + options.url
    wepy.showLoading({
      title: '数据加载中...'
    })
    let response = await wepy.request(options)
    // console.log(response);
    wepy.hideLoading()
    if (response.statusCode === 200) {
      return response
    }
  },
  // 登录方法
  login: async (data) => {
    let result = await util.api({url: 'login', method: 'POST', data: data})
    if (result.statusCode === 200) {
      return result
    }
  },
  // 获取令牌方法
  getToken() {
    // 从缓存中尝试获取token，如果能获取到，在判断是否过期
    // 如果能获取到，代表登录成功，否则则失败
    let token = wepy.getStorageSync('token')
    if (token) {
      // 判断是否过期
      if (new Date().getTime() < token.addtime + token.expires_in * 1000) {
        return token.access_token
      } else {
        return null
      }
    }
    return null
  },
  // 需要验证的请求方法
  authApi: async (options) => {
    // 判断options里面有没有header属性，如果没有给它设置一个空对象
    options.header = options.header ? options.header : {}
    // 往请求数据中的header头信息中添加令牌值
    options.header.Authorization = 'Bearer' + util.getToken()
    return await util.api(options)
  },
  // 获取用户信息方法
  userInfo: async () => {
    let result = await util.authApi({url: 'me'})
    if (result.statusCode === 200) {
      return result.data
    }
  },
  // 退出登录方法
  logout: async () => {
    let result = await util.authApi({url: 'logout'})
    // console.log(result)
    if (result.statusCode === 200) {
      // 将缓存中的token数据删除
      wepy.removeStorageSync('token')
      return result
    }
  }
}

export default util
